package com.rskj.cashbook.service;

import com.rskj.cashbook.vo.SqlTxtMonitorLog;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

public interface ISqlMonitorLogService {
    
    /**
     * 保存SQL日志
     */
    void saveSqlLog(SqlTxtMonitorLog log);

    /**
     * 批量保存SQL日志
     */
    void saveSqlLogBatch(List<SqlTxtMonitorLog> logs);

    /**
     * 根据条件查询SQL日志
     */
    List<SqlTxtMonitorLog> querySqlLogs(SqlTxtMonitorLog condition);

    /**
     * 查询慢查询SQL
     */
    List<SqlTxtMonitorLog> getSlowQueries(Long threshold);

    /**
     * 查询错误SQL
     */
    List<SqlTxtMonitorLog> getErrorQueries();

    /**
     * 清理过期日志
     */
    int cleanExpiredLogs(LocalDateTime expireTime);

    /**
     * 获取SQL执行统计信息
     */
    Map<String, Object> getSqlStatistics(LocalDateTime startTime);

    /**
     * 异步保存SQL日志（避免影响主业务流程）
     */
    void saveSqlLogAsync(SqlTxtMonitorLog log);
}
